package com.guodi.map.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.guodi.common.utils.PageData;
import com.guodi.map.entity.MapLayer;

import java.util.List;

/**
 * @描述：地图图层表 服务类
 * @作者: 代鹏刚
 * @日期: 2019-12-11
 */
public interface IMapLayerService extends IService<MapLayer> {


    String getLayerUrlById(String id);

    /**
    * @描述: 根据实体类检索
    * @作者: 代鹏刚
    * @日期: 2019/12/11 11:17
    **/
    List<MapLayer> listByEntity(PageData pd);

    /**
     * @描述: 根据实体类检索懒加载
     * @作者: 代鹏刚
     * @日期: 2019/12/11 11:17
     **/
    List<MapLayer> listLazyByEntity(PageData pd);

    /**
    * @描述: 保存
    * @作者: 代鹏刚
    * @日期: 2019/12/27 17:04
    **/
    void saveMaplayer(MapLayer mapLayer,boolean insertFlag);

    /**
    * @描述: 获取所有类型为底图的数据
    * @作者: 代鹏刚
    * @日期: 2020/1/7 10:45
    **/
    List<MapLayer> getBaseMap();

    /**
    * @描述: 懒加载关联图层
    * @作者: 代鹏刚
    * @日期: 2020/1/10 12:09
    **/
    List<MapLayer> lazyLoadMapLayer(String dirId, String parentId);

    /**
    * @描述:懒加载行政区划关联图层
    * @入参:
    * @出参:
    * @作者: 郑文彬
    * @日期: 2020/4/10 11:02
    **/
    List<MapLayer> lazyLoadDivisionMapLayer(String parentId,boolean filter);

    /**
    * @描述: 根據Id刪除
    * @作者: 代鹏刚
    * @日期: 2020/1/19 14:45
    **/
    void deleteById(String... ids);

    /**
    * @描述: 根据机构查询已授权根目录
    * @作者: 代鹏刚
    * @日期: 2020/2/11 15:10
    **/
    List<MapLayer> listByOrg(List<String> orgIds);

    /**
     * @作者: 林楷 2021/5/25
     * @描述: 根据父节点查新子节点列表
     * @参数: parentId
     * @返回:
     */
    List<MapLayer> listByParentId(String parentId);

    /**
    * @描述: 获取展示的目录、服务、图层
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2022/4/28 17:51
    **/
    List<MapLayer> getServiceAndLayer(List<MapLayer> dataList);

    /**
    * @描述: 返回服务类型
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2022/4/28 17:51
    **/
    String getLayerType(String serverUrl, JSONObject serverResult);

    /**
    * @描述: 判断是否是ogc标准服务
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2022/4/28 17:51
    **/
    boolean ogcFlag(String layerUrl);

    /**
    * @描述: 删除子图层和对应的字段
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2022/4/28 17:51
    **/
    boolean deleteChildAndField(List<String> ids);

    /**
    * @描述: 同步更新专题服务和功能参数图层名称
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2022/4/28 17:51
    **/
    boolean syncLayerName(List<MapLayer> layers);

    /**
      * 根据父节点获取最大排序
      *
      * @描述 设置面
      * @入参
      * @出参
      * @作者 dhj
      * @日期 2023/10/13 11:16
      */
    Integer getMaxSortByParentId(String parentId);
}
